package com.lonely.system.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.lonely.system.domain.entity.SysRoleMenu;
import com.lonely.system.domain.vo.system.menu.QueryRoleButtonVo;

import java.util.List;

/**
 * @author: 黄志标
 * @date: 2025/5/26 13:25
 * @description: 角色和菜单关联业务接口
 */
public interface ISysRoleMenuService extends IService<SysRoleMenu> {


    /**
     * 根据角色id获取角色绑定的菜单id集合
     *
     * @param roleId
     * @return
     */
    List<Long> getRoleMenusByRoleId(Long roleId);

    /**
     * 批量根据角色id获取菜单权限码集合
     *
     * @param roleIds
     * @return
     */
    List<String> batchGetMenuPermsByRoleId(List<Long> roleIds);

    /**
     * 根据角色id获取角色绑定的按钮id集合
     *
     * @param roleId
     * @return
     */
    List<Long> getRoleButtonsByRoleId(Long roleId);

    /**
     * 获取该角色选中的所有菜单下的所有按钮集合
     *
     * @param roleId
     * @return
     */
    List<QueryRoleButtonVo> getButtonsFromSelectedMenuByRoleId(Long roleId);

    /**
     * 批量保存角色和菜单关联信息
     *
     * @param roleId
     * @param menuIds
     */
    void batchSaveRoleMenus(Long roleId, List<Long> menuIds);

    /**
     * 删除指定角色id关联的所有菜单信息
     *
     * @param roleId
     */
    void deleteByRoleId(Long roleId);

    /**
     * 批量删除指定角色id关联的所有菜单信息
     *
     * @param roleIds
     */
    void batchDeleteByRoleIds(List<Long> roleIds);
}
